package com.liangtian.mdm.system.business.dao;


import com.liangtian.mdm.base.BaseDao;
import com.liangtian.mdm.system.business.model.SysBusiness;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

@Repository
public interface SysBusinessDao extends BaseDao<SysBusiness> {


    /**
     * 查询最大的排序号
     *
     * @param grade
     * @return
     */
    public String queryMaxOrderByGrade(String grade);


    public List<SysBusiness> querySysBusTree(SysBusiness sysBusiness);

    public List<SysBusiness> querySysBusTreeForWk(SysBusiness sysBusiness);

    public List<SysBusiness> querySysBusTreeForButton(SysBusiness sysBusiness);

    public List<SysBusiness> querySysBusTreeForView(SysBusiness sysBusiness);

    /**
     * 左侧列表查询
     *
     * @param menu
     * @return
     */
    public List<SysBusiness> queryBusByContion(SysBusiness sysBusiness);

    /**
     * 左侧列表总数查询
     *
     * @param menu
     * @return
     */
    public List<SysBusiness> queryBusByContionCount(SysBusiness sysBusiness);

    /**
     * 前台插入菜单
     *
     * @param menu
     */
    public int insertBusiness(SysBusiness sysBusiness);


    /**
     * <p>Title: </p>
     * <p>Description: TODO </p>
     * <p>Company:@param sysBusiness
     * <p>Company:@return </p>
     *
     * @author : xiaoliu
     * @date :2016年10月13日下午4:07:28
     */
    public SysBusiness queryBusById(SysBusiness sysBusiness);

    /**
     * * <p>Title: 业务类型删除方法 </p>
     * <p>Description: TODO </p>
     * <p>Company:@param map
     * <p>Company:@return </p>
     *
     * @author : xiaoliu
     * @date :2016年10月13日下午4:35:31
     */
    public int deleteBus(Map<String, Object> map);

    /**
     * * <p>Title: 在生成菜单时，判断如果已经生成业务类型，那么删除原来的业务类型</p>
     * <p>Description: TODO </p>
     * <p>Company:@param modelId </p>
     *
     * @author : xiaoliu
     * @date :2016年10月17日下午1:04:35
     */
    public void deleteBusByMId(String tableName);

    /**
     * * <p>Title: 校验业务类型名称，是否重复</p>
     * <p>Description: TODO </p>
     * <p>Company:@param map
     * <p>Company:@return </p>
     *
     * @author : xiaoliu
     * @date :2016年10月17日下午1:05:29
     */
    public int checkBusName(Map<String, Object> map);

    /**
     * * <p>Title: 校验业务类型名称，是否重复</p>
     * <p>Description: TODO </p>
     * <p>Company:@param map
     * <p>Company:@return </p>
     *
     * @author : xiaoliu
     * @date :2016年10月17日下午1:05:29
     */
    public int checkBusTableName(Map<String, Object> map);


    /**
     * * <p>Title: 校验是否根节点</p>
     * <p>Description: TODO </p>
     * <p>Company:@param busId
     * <p>Company:@return </p>
     *
     * @author : xiaoliu
     * @date :2016年10月17日下午1:35:24
     */
    public int checkBusNode(String busId);

    /**
     * * <p>Title: 编辑页面，业务名称校验</p>
     * <p>Description: TODO </p>
     * <p>Company:@return </p>
     *
     * @author : xiaoliu
     * @date :2016年10月17日下午4:31:40
     */
    public int selectAllBusName(SysBusiness sysBusiness);

    /**
     * * <p>Title: 编辑页面，业务名称校验</p>
     * <p>Description: TODO </p>
     * <p>Company:@return </p>
     *
     * @author : xiaoliu
     * @date :2016年10月17日下午4:31:40
     */
    public int selectAllBusTableName(SysBusiness sysBusiness);

    /**
     * 根据业务类型名称查询
     *
     * @param businessName
     * @return
     */
    public SysBusiness queryByBusinessName(String businessName);

    /**
     * * <p>Title: 业务类型编辑方法</p>
     * <p>Description: TODO </p>
     * <p>Company:@param sysBusiness </p>
     *
     * @author : xiaoliu
     * @date :2016年10月17日下午5:00:21
     */
    void updateBus(SysBusiness sysBusiness);

    List<Map<String, Object>> queryDataTables(List<String> Lst);

    SysBusiness selectBusByTable(String busTable);

    public void deleteBusByBusTables(Map<String, Object> param);

    // List<ProcdefTasks> selectAllProtasks(String busiTable);

    public List<SysBusiness> queryCodeSysBusTree(Map<String, Object> param);


    public List<SysBusiness> queryBusByContion2(SysBusiness sysBusiness);


}
